/*************************************************************************************
 *
 *	模块名称 : 消息队列操作接口
 *	文件名称 : 03_list.c
 *	版   本 : V1.0
 *	说   明 : 线程邮箱中链表的相应操作函数接口
 *	修改记录 :
 *		     版本号       日期         作者        说明
 *	         V1.0     2023-04-13      rush_long        发布
 *
 *	
 *
 *************************************************************************************/

#ifndef __QUEUE_H__
#define __QUEUE_H__

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "03_list.h"

/***************************************************************
 *函数名: init_que
 *功  能: 初始化消息队列
 *参  数: 
 * 		无
 *返回值: 
 * 		返回0
 * 	
 *注意事项:
 *		无
 ***************************************************************/
extern int init_que(LIST_LINK *list_head);

/***************************************************************
 *函数名: in_queue
 *功  能: 将消息接入消息队列的队尾（入队）
 *参  数: 
 * 		消息队列头节点指针，需要加入节点中的数据
 *返回值: 
 * 		返回0
 * 	
 *注意事项:
 *		传入的两个参数均不能为空指针
 ***************************************************************/
extern int in_queue(LIST_LINK *list_head, MAIL_DATA *data);

/***************************************************************
 *函数名: out_queue
 *功  能: 将消息从消息队列头部摘除（出队）
 *参  数: 
 * 		消息队列头节点指针，接收数据的数据结体提指针
 *返回值: 
 * 		成功返回0
 *		失败返回-1
 *注意事项:
 *		传入的两个参数均不能为空指针
 ***************************************************************/
extern int out_queue(LIST_LINK *list_head, MAIL_DATA *data);

/***************************************************************
 *函数名: destroy_que
 *功  能: 销毁消息队列
 *参  数: 
 * 		需要销毁的消息队列头节点指针
 *返回值: 
 * 		无
 * 	
 *注意事项:
 *		无
 ***************************************************************/
extern void destroy(LIST_LINK *list_head);

#endif
